package cn.tedu.csmall.product.preload;

import cn.tedu.csmall.product.mapper.BrandMapper;
import cn.tedu.csmall.product.pojo.vo.BrandListItemVO;
import cn.tedu.csmall.product.repo.IBrandRedisRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 项目启动只做一次的
 * 缓存预热
 * @author 何惠民
 */
@Slf4j
//@Component
public class CachePreload implements ApplicationRunner {

    @Autowired
    BrandMapper brandMapper;

    @Autowired
    private IBrandRedisRepository brandRedisRepository;

    public CachePreload() {
        log.debug("创建开机自动执行的组件对象:CachePreload");
    }

    /**
     * ApplicationRunner的run()方法会在项目启动成功后自动运行
     */
    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.debug("CachePreload().run()");
        log.debug("准备删除Redis中的缓存数据");
        brandRedisRepository.deleteALL();

        log.debug("准备从数据库中读取品牌列表....");
        List<BrandListItemVO> list = brandMapper.list();
        log.debug("从数据库中读取品牌列表完成....");

        log.debug("准备向Redis中写入品牌列表....");
        brandRedisRepository.save(list);
        log.debug("向Redis中写入品牌列表完成....");
    }
}
